package com.xingchi.tornado.storage.core.service;

import com.xingchi.tornado.storage.core.converter.DownloadFileHolder;
import com.xingchi.tornado.storage.core.model.FileUploadHolder;
import com.xingchi.tornado.storage.core.model.dto.FileDTO;
import com.xingchi.tornado.storage.core.model.dto.UserFileRelDTO;

import java.io.InputStream;

/**
 * 文件上传服务接口
 *
 * @author xingchi
 * @date 2024/5/4 13:02
 */
public interface FileUploadService {

    /**
     * 上传文件
     *
     * @param fileUploadHolder 文件上传上下文
     * @return 用户文件关联信息
     */
    UserFileRelDTO uploadFile(FileUploadHolder fileUploadHolder);

    /**
     * 下载文件
     *
     * @param id 文件id
     */
    void download(Long id);

    /**
     * 下载文件
     *
     * @param path 文件路径
     */
    void download(String path);

    /**
     * 获取文件流
     *
     * @param id 文件id
     * @return 文件信息
     */
    DownloadFileHolder getInputStream(Long id);

    /**
     * 获取文件流
     *
     * @param path 文件路径
     * @return 文件信息
     */
    DownloadFileHolder getInputStream(String path);


}
